A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
1. Field of the Invention
This invention relates to image editors, and more particularly to methods for editing images and image editors capable of modifying images in a structured image (SI) format using an appropriate user interface. The SI image editor and editing method provide a memory efficient open editing environment with unlimited access to past edit operations.
2. Description of Related Developments
In general, there are several types of editors designed to handle the different types of document components. Examples include, a raster editor for editing digital images, a graphics editor for editing vector graphics and a text editor for editing text information. Therefore, in order to create or edit a complex document containing text, graphics and digital/raster images, the operator currently has to edit the discrete components independently (i.e., in their native formats) and then combine them. Edit tools available today are aimed at this assembly process and are commonly called illustrators.
Illustrators are created as monolithic tools with the goal of facilitating the assembly process for subcomponent objects. In general, illustrators allow for simple editing, for example, line drawing and colorization, digital image placement and sizing, text generation, text sizing and text colorization, background colors and patterns. Given this level of editability, it still remains that, for detailed editing of subcomponent objects, the native object editor is required. For example, if the object is a completely formatted raster, then a native raster editor is required for editing.
Additionally, in cases where the lowest common denominator is bits (i.e., the digital or raster editor), all editing that includes higher level types, for example, text, must add this data as bits. When the editing is complete, the resulting image or page stands as a new representation with limited ability for undoing operations. In general, most bit editors allow only one level of undo.
Further, a critical problem with medium to low level digital or raster editors is their usage of memory. Because the image is composed of bits, edits made to the image must necessarily change bits. A common method for providing undo operations is to buffer enough memory to hold two copies of the original image. The initial image is placed in buffer 1. A first edit is merged with buffer 1 and placed in buffer 2. This process continues indefinitely, toggling between buffers, until the edit is complete. If the operation is undo, for example, the user simply renders the previous buffer. This inevitably results in the use of large amounts of memory. For example, an original 24 bit full page 300 spi image consumes 28 megabytes. Therefore, in order to edit this image, a minimum of 56 megabytes of spare disk memory is required. In addition, processing is very slow as each applied edit writes the full resolution image to disk, memory or swap.
From an historical perspective, information to be displayed or printed has ultimately been converted to digital information, i.e., ones and zeros. To facilitate the manipulation of these bits, higher orders of representation were developed (e.g., text and vector graphics). For example, to display a text string, the user types on a keyboard "display my text" and the text appears on the display screen. The processing for this information carried around data as a text representation and was rendered to bits at some destination. The operation of reediting the string utilizes the editor's internal structure to tie the placement of bits on a display screen back to a higher level text representation. This generic information flow is shown in FIG. 1.
In FIG. 1, the editor's data structure is intimately tied to the higher level representation (e.g. text or graphics). This facilitates a discrete editor's ability to perform complex editing functions. For this example, the information flow starts at input from a keyboard as the high level representation. This representation feeds the character renderer to generate bits for the display. Once rendered, the display data can be edited when selected by a mouse or cursor keys at the user interface. In the final analysis, the edit/display process evolves through a higher level representation (text, vector graphics), to bits, to higher level representation, to bits, and so forth.
Thus, the problem is that most images or pages created today are composed from multiple types of data, that is, text, graphics, patterns and all combinations thereof. Another drawback is that several assembly and editing iterations can be required before the job is finally complete. This context switching hinders creativity and slows productivity. In addition, when various data types are assembled as bits, the ability to reedit the high level data types is gone.
Accordingly, a need exists for a structured image editor that conveys the underlying components and operations that are performed to produce a complex structured image to the user, and that permits the user to easily construct, edit, re-edit and print the complex structured image.